using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Collections.Generic;
using System.Collections;
using J2ME.RMS;
using Nextel.Utils;

namespace Java.binario.bean
{

    public class RutaBean : Persistente , IComparable<RutaBean>
    {
        public String codigoActividad = "";
        public String nombre;
        public String ultimoEstado;
        public String finalizado;
        public String descripcion;
        public String direccion;
        public String fechaInicio;
        public String fechaFin;
        public Int64 orden;
        public int noVisita; //0 none, 1 noVista

        public List<EstadoJavaBean> lstEstados = new List<EstadoJavaBean>();

        public override void persistir(DataOutputStream dataOutput, List<Persistente> list)
        {
            dataOutput.writeInt(list.Count);

            for (int i = 0; i < list.Count; i++)
            {
                RutaBean bean = (RutaBean)list[i];
                bean.persistirItem(dataOutput);
            }
        }

        public void persistirItem(DataOutputStream dataOutput)
        {
            dataOutput.writeShort(this.getPosicionID()); 
            dataOutput.writeString(StringUtils.stringNullToBlank(codigoActividad));
            dataOutput.writeString(StringUtils.stringNullToBlank(nombre));
            dataOutput.writeString(StringUtils.stringNullToBlank(descripcion));
            dataOutput.writeString(StringUtils.stringNullToBlank(direccion));

           // dataOutput.writeString(StringUtils.stringNullToBlank(fechaInicio));
            dataOutput.writeString(StringUtils.stringNullToBlank(ultimoEstado));
            dataOutput.writeInt(noVisita);
            dataOutput.writeInt(lstEstados.Count);

            if (lstEstados.Count > 0)
            {
                lstEstados.Sort(ordenarEstado);

                for (int i = 0; i < lstEstados.Count; i++)
                {
                    EstadoJavaBean bean = (EstadoJavaBean)lstEstados[i];
                    bean.orden = i + 1;
                    bean.persistirItem(dataOutput);
                }
            }
        }

        private static int ordenarEstado(EstadoJavaBean bean1, EstadoJavaBean bean2)
        { 
            return bean1.CompareTo(bean2); 
        }

        public int CompareTo(RutaBean bean)
        {
            try
            {
                Int64 x = this.orden;
                Int64 y = bean.orden;

                if (x == y)
                {
                    return 0;

                }
                else if (x > y)
                {
                    return 1;
                }
                else
                {
                    return -1;
                }
            }

            catch (Exception ex)
            {
                return -1;
            }

        }
    }

}
